package com.fx.tool;

import cn.hutool.core.io.file.FileReader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

/**
 * 网络相关
 */
public class HttpTool {

    public static void main(String[] args) throws Exception {
        batchDownImg("D:/temp/72张图片.txt","d:/temp/imgs");
    }

    /**
     * 通过url下载图片保存到本地
     * @param urlString
     * @param targetFilePath 下载路径和名称
     * @throws Exception
     */
    public static void download(String urlString, String targetFilePath) throws Exception {
        // 构造URL
        URL url = new URL(urlString);
        // 打开连接
        URLConnection con = url.openConnection();
        // 输入流
        InputStream is = con.getInputStream();
        // 1K的数据缓冲
        byte[] bs = new byte[1024];
        // 读取到的数据长度
        int len;
        // 输出的文件流

        File file = new File(targetFilePath);
        FileOutputStream os = new FileOutputStream(file, true);
        // 开始读取
        while ((len = is.read(bs)) != -1) {
            os.write(bs, 0, len);
        }
        System.out.println(targetFilePath);
        // 完毕，关闭所有链接
        os.close();
        is.close();
    }

    /**
     * 批量下载图片
     * @param urlFile 图片资源url，该文本文件可以保存多个，一行一个
     * @param targetFolder 目标文件夹
     * @throws Exception
     */
    public static void batchDownImg(String urlFile, String targetFolder) throws Exception {
        FileReader fileReader = new FileReader(urlFile);
        List<String>lines= fileReader.readLines();
        for (int i = 0; i < lines.size(); i++) {
            download(lines.get(i),targetFolder+File.separator+String.valueOf(i)+".jpg");
        }
    }

}
